<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Assimp: Importer-specific Notes</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Assimp
   &#160;<span id="projectnumber">v3.0 (July 2012)</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Importer-specific Notes </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><hr/>
 <h1><a class="anchor" id="blender"></a>
Blender (.blend)</h1>
<p>This section contains implementation notes for the Blender3D importer. </p>
<h2><a class="anchor" id="bl_overview"></a>
Overview</h2>
<p>assimp provides a self-contained reimplementation of Blender's so called SDNA system (<a href="http://www.blender.org/development/architecture/notes-on-sdna/">http://www.blender.org/development/architecture/notes-on-sdna/</a>). SDNA allows Blender to be fully backward and forward compatible and to exchange files across all platforms. The BLEND format is thus a non-trivial binary monster and the loader tries to read the most of it, naturally limited by the scope of the <a class="el" href="structai_scene.html" title="The root structure of the imported data.">aiScene</a> output data structure. Consequently, if Blender is the only modeling tool in your asset work flow, consider writing a custom exporter from Blender if assimps format coverage does not meet the requirements.</p>
<h2><a class="anchor" id="bl_status"></a>
Current status</h2>
<p>The Blender loader does not support animations yet, but is apart from that considered relatively stable.</p>
<h2><a class="anchor" id="bl_notes"></a>
Notes</h2>
<p>When filing bugs on the Blender loader, always give the Blender version (or, even better, post the file caused the error).</p>
<hr/>
 <h1><a class="anchor" id="ifc"></a>
IFC (.ifc, Industry Foundation Classes)</h1>
<p>This section contains implementation notes on the IFC-STEP importer. </p>
<h2><a class="anchor" id="ifc_overview"></a>
Overview</h2>
<p>The library provides a partial implementation of the IFC2x3 industry standard for automatized exchange of CAE/architectural data sets. See <a href="http://en.wikipedia.org/wiki/Industry_Foundation_Classes">http://en.wikipedia.org/wiki/Industry_Foundation_Classes</a> for more information on the format. We aim at getting as much 3D data out of the files as possible.</p>
<h2><a class="anchor" id="ifc_status"></a>
Current status</h2>
<p>IFC support is new and considered experimental. Please report any bugs you may encounter.</p>
<h2><a class="anchor" id="ifc_notes"></a>
Notes</h2>
<ul>
<li>Only the STEP-based encoding is supported. IFCZIP and IFCXML are not (but IFCZIP can simply be unzipped to get a STEP file).</li>
<li>The importer leaves vertex coordinates untouched, but applies a global scaling to the root transform to convert from whichever unit the IFC file uses to <em>metres</em>.</li>
<li>If multiple geometric representations are provided, the choice which one to load is based on how expensive a representation seems to be in terms of import time. The loader also avoids representation types for which it has known deficits.</li>
<li>Not supported are arbitrary binary operations (binary clipping is implemented, though).</li>
<li>Of the various relationship types that IFC knows, only aggregation, containment and material assignment are resolved and mapped to the output graph.</li>
<li>The implementation knows only about IFC2X3 and applies this rule set to all models it encounters, regardless of their actual version. Loading of older or newer files may fail with parsing errors.</li>
</ul>
<hr/>
 <h1><a class="anchor" id="ogre"></a>
Ogre (.mesh.xml)</h1>
<p><em>ATTENTION</em>: The Ogre-Loader is currently under development, many things have changed after this documentation was written, but they are not final enough to rewrite the documentation. So things may have changed by now!</p>
<p>This section contains implementations notes for the OgreXML importer. </p>
<h2><a class="anchor" id="overview"></a>
Overview</h2>
<p>Ogre importer is currently optimized for the Blender Ogre exporter, because thats the only one that I use. You can find the Blender Ogre exporter at: <a href="http://www.ogre3d.org/forums/viewtopic.php?f=8&t=45922">http://www.ogre3d.org/forums/viewtopic.php?f=8&amp;t=45922</a></p>
<h2><a class="anchor" id="what"></a>
What will be loaded?</h2>
<p>Mesh: Faces, Positions, Normals and all TexCoords. The Materialname will be used to load the material.</p>
<p>Material: The right material in the file will be searched, the importer should work with materials who have 1 technique and 1 pass in this technique. From there, the texturename (for 1 color- and 1 normalmap) and the materialcolors (but not in custom materials) will be loaded. Also, the materialname will be set.</p>
<p>Skeleton: Skeleton with Bone hierarchy (Position and Rotation, but no Scaling in the skeleton is supported), names and transformations, animations with rotation, translation and scaling keys.</p>
<h2><a class="anchor" id="export_Blender"></a>
How to export Files from Blender</h2>
<p>You can find informations about how to use the Ogreexporter by your own, so here are just some options that you need, so the assimp importer will load everything correctly:</p>
<ul>
<li>Use either "Rendering Material" or "Custom Material" see <a class="el" href="importer_notes.html#material">Materials</a></li>
<li>do not use "Flip Up Axies to Y"</li>
<li>use "Skeleton name follow mesh"</li>
</ul>
<h2><a class="anchor" id="xml"></a>
XML Format</h2>
<p>There is a binary and a XML mesh Format from Ogre. This loader can only Handle xml files, but don't panic, there is a command line converter, which you can use to create XML files from Binary Files. Just look on the Ogre page for it.</p>
<p>Currently you can only load meshes. So you will need to import the *.mesh.xml file, the loader will try to find the appendant material and skeleton file.</p>
<p>The skeleton file must have the same name as the mesh file, e.g. fish.mesh.xml and fish.skeleton.xml.</p>
<h2><a class="anchor" id="material"></a>
Materials</h2>
<p>The material file can have the same name as the mesh file (if the file is model.mesh or model.mesh.xml the loader will try to load model.material), or you can use Importer::Importer::SetPropertyString(AI_CONFIG_IMPORT_OGRE_MATERIAL_FILE, "materiafile.material") to specify the name of the material file. This is especially usefull if multiply materials a stored in a single file. The importer will first try to load the material with the same name as the mesh and only if this can't be open try to load the alternate material file. The default material filename is "Scene.material".</p>
<p>We suggest that you use custom materials, because they support multiple textures (like colormap and normalmap). First of all you should read the custom material sektion in the Ogre Blender exporter Help File, and than use the assimp.tlp template, which you can find in scripts/OgreImpoter/Assimp.tlp in the assimp source. If you don't set all values, don't worry, they will be ignored during import.</p>
<p>If you want more properties in custom materials, you can easily expand the ogre material loader, it will be just a few lines for each property. Just look in OgreImporterMaterial.cpp</p>
<h2><a class="anchor" id="Importer"></a>
Properties</h2>
<ul>
<li>IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME: Normally, a texture is loaded as a colormap, if no target is specified in the materialfile. Is this switch is enabled, texture names ending with _n, _l, _s are used as normalmaps, lightmaps or specularmaps. <br/>
 Property type: Bool. Default value: false.</li>
<li>IMPORT_OGRE_MATERIAL_FILE: Ogre Meshes contain only the MaterialName, not the MaterialFile. If there is no material file with the same name as the material, Ogre Importer will try to load this file and search the material in it. <br/>
 Property type: String. Default value: guessed.</li>
</ul>
<h2><a class="anchor" id="todo"></a>
Todo</h2>
<ul>
<li>Load colors in custom materials</li>
<li>extend custom and normal material loading</li>
<li>fix bone hierarchy bug</li>
<li>test everything elaboratly</li>
<li>check for non existent animation keys (what happens if a one time not all bones have a key?) </li>
</ul>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jul 10 2012 17:55:53 for Assimp by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.1
</small></address>
</body>
</html>
